package com.guochao.myRPCversion4.server;


import java.util.HashMap;
import java.util.Map;

/**
 * 存放服务接口名与服务端对应的实现类
 * 服务启动时要暴露其相关的实现类
 * 根据request中的interface调用服务端中相关实现类（通过key找到value）
 */
public class ServiceProvider {
    /**
     * 一个实现类可能实现多个接口
     */
    private Map<String, Object> interfaceProvider;

    public ServiceProvider(){
        this.interfaceProvider = new HashMap<>();
    }
    //            key                value
    //        userservice ---> userserviceimpl(实现类)
    //        blogservice----> blogserviceimpl(实现类)
    public void provideServiceInterface(Object service){
        Class<?>[] interfaces = service.getClass().getInterfaces();//获取某个service实现类中的所有接口

        for(Class clazz : interfaces){
            interfaceProvider.put(clazz.getName(),service);  //因为需要快速获取对应的service实现类,所以将接口和接口实现类形成hashmap
        }
    }
    public Object getService(String interfaceName){
        return interfaceProvider.get(interfaceName);
    }

}
